package ntd.util.modular.data.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import ntd.util.config.common.entity.BaseEntityMybatis;
import ntd.util.config.common.enums.data.EnumDataAcquisitionRuleStatus;
import ntd.util.config.common.enums.data.EnumDataAcquisitionType;
import ntd.util.config.common.enums.data.EnumProtocolType;
import ntd.util.util.metadata.NtdField;

@EqualsAndHashCode(callSuper = true)
@TableName("data_acquisition_rule")
@Data
@Schema(description = "数据中心 - 数据采集规则")
public class DataAcquisitionRule extends BaseEntityMybatis<DataAcquisitionRule> {

    @Schema(description = "所属机构", title = "所属机构")
    @NtdField(type = 6, oneModular = "common", twoModular = "mechanism")
    private String tenantId;
    @Schema(description = "规则名称", title = "规则名称")
    private String name;
    
    @Schema(description = "规则类型", title = "规则类型")
    private EnumDataAcquisitionType enumDataAcquisitionType;
    
    @Schema(description = "协议类型", title = "协议类型")
    private EnumProtocolType enumProtocolType;
    /**
     * 可使用变量
     * key - 设备标识
     * current_date - 当前时间 {{current_date,时间格式字符串}}
     *
     * 扩展字段
     * host - 主机地址
     * port - 主机端口
     * username - 用户名
     * password - 密码
     * beginCode - 开始code - tcp等链接使用
     * endCode - 结束code - tcp等链接使用
     * cron：执行频率（http等协议 - 代表调用频率，tcp等协议 - 代表推送频率）
     * params：调用参数（可以使用变量）
     *
     */
    @Schema(description = "扩展json", title = "扩展json")
    private String extendJson;
    @Schema(description = "规则状态 0: 等待部署，1：运行中，2：部署异常，3：人工停止", title = "规则状态")
    private EnumDataAcquisitionRuleStatus status;

}
